package com.itheima.userdemo.controller;

import com.alibaba.fastjson.JSON;
import com.itheima.userdemo.pojo.Result;
import com.itheima.userdemo.pojo.User;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedReader;
import java.io.IOException;
import java.util.HashMap;

@WebServlet("/jsonServlet")
public class JSONServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("JSONServlet...");
        // 与之前区别，现在前端发给我们的是JSON数据，我们如何接收？
        // 如果前端是JSON串，一定不能用req.getParameter()接收了，只能用流接收
        // 原理是k=v&k=v&k=v,  现在 JSON串: {"username":"zhangsan","password":"123"}
//        BufferedReader bufferedReader = req.getReader();
//        String readLine = bufferedReader.readLine();
//        System.out.println(readLine);
        // {"username":"zhangsan","password":"123"}
        // 把JSON字符串与Java对象，进行自动转换
        // 我们把前端数据需要封装成对象，然后调用service
//        User user = new User();
//        user.setUsername("");
//        user.setPassword("");
        // 把流和类型放进去，出来的就是对象
        User user = JSON.parseObject(req.getInputStream(), User.class);
        System.out.println(user);

        // 需要返回一个JSON字符串给前端,这样JSON串是自己构建的，方便吗？
        // Result专门未返回的数据，设计的一个类
        Result resultObj = new Result(1,"OK!!!",null);
        HashMap map = new HashMap();
        map.put("message","ok!!!");
        map.put("code",1);
        // 这个是自己写的，太不方便了
        String result = "{\"message\":\"ok!!!\",\"flag\":\"true\"}";
        System.out.println("resultObj-String"+JSON.toJSONString(resultObj));
        System.out.println("result"+result);
        resp.getWriter().write(JSON.toJSONString(resultObj));

    }
}
